prototypingの遷移 | ScrapboxでVim key bindingsを作ろうと試行錯誤してる話
コマンドの実装方法を模索する段階
1. /villagepump/VimのNormal modeを実装してみる
一番最初に書いたコードです
とにかく動く事を最優先に作っていました
いくつか機能を足して、browserをreloadして試して、バグを直してreloadして試して、……の繰り返しです
2. ScrapVim-lite
1.と同様、具体的なcommandを実装する事を最優先に作っています
キー入力イベントの処理方法を変更しました
1.では簡単にキーバインドを追加できるMousetrapというlibraryを使っていました。
しかし、2文字以上のコマンドを使うと、最後の文字以外がeditorにそのまま入力されてしまう問題がありました
例えばyyと入力すると、行yankが実行される前にyがeditorに入力されてしまいます。
どうしようもないので、Web APIのaddeventListenerを直接使うように変更しました
program設計を考える段階
3. ScrapVim-lite-2
ESModuleによるファイル分割とclass化をメインに行っています
一応機能単位を考えてファイル分割をしています
ただ、分割したかったというより、コードが長くなりすぎて見にくくなったので分割したという動機の方が大きかった気がします
4. ScrapVim-lite-3 (開発中)
アドカレまでに間に合わなかったやつです。つらい
3.の設計が個人的にあんまりよくない(完全に雰囲気)ように思えたので、1からえいやと作り直しました
ここから設計が本格的になってきました
from Vim Advent Calendar 2020の記事を書く
#2020-12-19 00:03:50